<?php

//
//  Copyright (C) 2004-2006  Autodesk, Inc.
//
//  This library is free software; you can redistribute it and/or
//  modify it under the terms of version 2.1 of the GNU Lesser
//  General Public License as published by the Free Software Foundation.
//
//  This library is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  Lesser General Public License for more details.
//
//  You should have received a copy of the GNU Lesser General Public
//  License along with this library; if not, write to the Free Software
//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
//

?>

<?php
require_once("config.php");
require_once("utils.php");
require_once(ROOT_DIR_CLASES.'/cCliente.php');
require_once(ROOT_DIR_CLASES.'/Movil.php');
require_once 'JSON.php';
class QueryMoviles
{
	private $args = null;

	function __construct($args)
	{
		$this->args = $args;
	}

	function formatLabel($formatArray, $consulta, $fila){
		$label = '';
		if (trim($formatArray[0])!='')
			$label .= $consulta->campo($formatArray[0],$fila).' ';
		if (trim($formatArray[1])!='')
			$label .= $formatArray[1].' ';
		if (trim($formatArray[2])!='')
			$label .= $consulta->campo($formatArray[2],$fila).' ';
		if(sizeof($formatArray)>3)	{
			if (trim($formatArray[3])!='')
				$label .= $formatArray[3].' ';
			if (trim($formatArray[4])!='')
				$label .= $consulta->campo($formatArray[4],$fila);
		}
		if (trim($label)=='') $label = 'unformatted label';
		return $label;
	}

	function getPosiMovil($posiciones, $fila){
		$posiMovil = new posiMovil();
		$posiMovil->id = $posiciones->campo('idMovil',$fila);
		$posiMovil->tienePosicionActual = 1;
		$posiMovil->longitud = quitCero($posiciones->campo('longitud',$fila));
		$posiMovil->latitud = quitCero($posiciones->campo('latitud',$fila));
		$posiMovil->velocidad = $posiciones->campo('velocidad',$fila);
       	$posiMovil->sentido = $posiciones->campo('sentido',$fila);
       	$posiMovil->sentidoPalabra = BykomCliente::Obtener_Palabra_Sentido($posiMovil->sentido);
       	$posiMovil->satelites = $posiciones->campo('satelites',$fila);
       	$posiMovil->direccionAbrev = trim(BykomCliente::Obtener_Direccion_Abreviada($posiciones->campo('direccion',$fila)));
       	$posiMovil->evento = $posiciones->campo('evento',$fila);
       	$posiMovil->validez = BykomCliente::Obtener_Palabra_Validez($posiciones->campo('validez',$fila));
       	$posiMovil->fechaMensaje = $posiciones->campo('fechaMensaje',$fila);
       	$posiMovil->statusZona = $posiciones->campo('statusZona',$fila);
       	$posiMovil->setZonaProhibida($posiciones->campo('zonaProhibida',$fila));
		$posiMovil->odometroParcial = $posiciones->campo('odometroParcial',$fila);
		$posiMovil->odometroTotal = $posiciones->campo('odometroTotal',$fila);
		$posiMovil->rpm = $posiciones->campo('rpm',$fila);
		$bateriaPrincipal = $posiciones->campo('bateriaPrincipal',$fila);
		if ($bateriaPrincipal == NULL || trim($bateriaPrincipal) == '') {
			$posiMovil->bateriaPrincipal = NULL;//"Desconocido";
		} else {
			$posiMovil->bateriaPrincipal = $bateriaPrincipal;
		}
		$bateriaSecundaria = $posiciones->campo('bateriaSecundaria',$fila);
		if ($bateriaSecundaria == NULL || trim($bateriaSecundaria) == '') {
			$posiMovil->bateriaSecundaria = NULL;//"Desconocido";
		} else {
			$posiMovil->bateriaSecundaria = $bateriaSecundaria;
		}
		$posiMovil->alimentacion = $posiciones->campo('alimentacion',$fila);
		$posiMovil->contactoMotor = $posiciones->campo('contacto',$fila);

		$porcentajeTanque = 50;
      	$posiMovil->porcentajeTanque = $porcentajeTanque;
      	$posiMovil->ocupado = 1;

		return $posiMovil;
	}

	function Execute(){
		$result = array();
		$indices = array();
		$cuenta = $this->args['CUENTA'];
		$objetivoDB = $this->args['OBJETIVODB'];
		$tablaId = $this->args['TABLAID'];
		$objetivo = $this->args['OBJETIVO'];
		$ddeRec = $this->args['DDEREC'];
		$countRec = $this->args['COUNTREC'];
		$lblFormat =  split(',',$this->args['LBLFORMAT']);
		$lblMapFormat =  split(',',$this->args['LBLMAPFORMAT']);
		$ctasVisibles = $this->args['CTASVISIBLES'];

		$PORCONFIG = $this->args['PORCONFIG'];//si viene del configuracion.js o no

		$orderByFormat = getOrderByFromLabelFormat($lblFormat);
		$ctas = array();
		switch($objetivoDB){
			case 1: $ctas = ""; 
			case(2):
					$ctas = BykomCliente::Cuentas_Cliente_Movil_BIS($cuenta); //movil
					break;
			case(3):if ($objetivo==4){
				   	    $ctas = BykomCliente::Cuentas_Cliente_Movil_FlotaAlias($tablaId, $orderByFormat,false);	//ALIAS de flota
			   	   	    if($ctas!= "" && $ctas->cantidad()==0){
   				   	  	   $ctas = BykomCliente::Cuentas_Cliente_Movil_Flota($cuenta, $orderByFormat); //flota
			   	   	    }else{
			   	   	       $ctas = BykomCliente::Cuentas_Cliente_Movil_FlotaAlias($tablaId, $orderByFormat,true);
			   	   	    }
				    }else{
				   	    $ctas = BykomCliente::Cuentas_Cliente_Movil_Flota($cuenta, $orderByFormat); //flota
				    }
					break;
			case(5):
					if ($objetivo==4){
						$ctas = BykomCliente::Cuentas_Cliente_Movil_DealerAlias($tablaId,$cuenta, $orderByFormat);//Alias de dealer
						if( $ctas == "" || $ctas->cantidad()==0){
							if($LOGIN->PERMISOSAlias[21] && $LOGIN->PERMISOSAlias[22] && $LOGIN->PERMISOSAlias[23]){
								$ctas = BykomCliente::Cuentas_Cliente_Movil_Dealer($cuenta, $orderByFormat); //dealer
							}
						}
					}else{
						if($PORCONFIG==1){
							$ctas = BykomCliente::getMovilesByDealer($cuenta, $orderByFormat); //dealer
						}else{
							$ctas = BykomCliente::Cuentas_Cliente_Movil_Dealer($cuenta, $orderByFormat); //dealer
						}
					}
					break;
		}
		//SETEO LAS CUENTAS
		if($ctas!=""){
			for ( $i=0; $i<$ctas->Cantidad(); $i++) {
				$Movil = new Movil();
				$Movil->id = $ctas->campo('ORDER_ID',$i);
				$Movil->movil = $ctas->campo('Movil',$i);
	   			$Movil->descripcion = $ctas->campo('Descripcion',$i);
		   		$Movil->identificador =$ctas->campo('Identificador',$i);
	   			$Movil->marca = $ctas->campo('Marca',$i);
	   			$Movil->modelo = $ctas->campo('Modelo',$i);
	   			$Movil->patente = $ctas->campo('Patente',$i);
				$Movil->tipoAvl = $ctas->campo('CodeAvl',$i);
				$Movil->tipoAvlNombre = $ctas->campo('TipoAvlNombre',$i);
				$Movil->label = $this->formatLabel($lblFormat, $ctas, $i);
				$Movil->labelSimple = $this->formatLabel($lblMapFormat, $ctas, $i);
				$Movil->grupoId = $ctas->campo('Grupo',$i);
				$Movil->activo = $ctas->campo('Activo',$i);
				$Movil->avlRestringido = $ctas->campo('AvlRestringido',$i);
				//$Movil->zonaHoraria = $ctas->campo('zonaHoraria',$i);
	
				$controlSensores = BykomCliente::Consulta_ControlaSensores($Movil->id);
				//objetos sensores//
				$oPuerta1 = new stdClass();
				$oPuerta2 = new stdClass();
				$oPuerta3 = new stdClass();
				$oPuerta4 = new stdClass();
				$oPuerta5 = new stdClass();
				$oPuerta6 = new stdClass();
				$oPuerta7 = new stdClass();
				$oPuerta8 = new stdClass();
				$oEnganche = new stdClass();
				$oLibreOcupado = new stdClass();
				$oPrepanico = new stdClass();
				
				$Movil->controlaPuerta1 = $controlSensores->campo('puerta1', 0);
				$oPuerta1->factor   = $controlSensores->campo('factorPuerta1', 0);
				$oPuerta1->minimo   = $controlSensores->campo('minimoPuerta1', 0);
				$oPuerta1->maximo   = $controlSensores->campo('maximoPuerta1', 0);
				
				$Movil->controlaPuerta2 = $controlSensores->campo('puerta2', 0);
				$oPuerta2->factor   = $controlSensores->campo('factorPuerta2', 0);
				$oPuerta2->minimo   = $controlSensores->campo('minimoPuerta2', 0);
				$oPuerta2->maximo   = $controlSensores->campo('maximoPuerta2', 0);
				
				$Movil->controlaPuerta3 = $controlSensores->campo('puerta3', 0);
				$oPuerta3->factor   = $controlSensores->campo('factorPuerta3', 0);
				$oPuerta3->minimo   = $controlSensores->campo('minimoPuerta3', 0);
				$oPuerta3->maximo   = $controlSensores->campo('maximoPuerta3', 0);
				
				$Movil->controlaPuerta4 = $controlSensores->campo('puerta4', 0);
				$oPuerta4->factor   = $controlSensores->campo('factorPuerta4', 0);
				$oPuerta4->minimo   = $controlSensores->campo('minimoPuerta4', 0);
				$oPuerta4->maximo   = $controlSensores->campo('maximoPuerta4', 0);
				
				$Movil->controlaPuerta5 = $controlSensores->campo('puerta5', 0);
				$oPuerta5->factor   = $controlSensores->campo('factorPuerta5', 0);
				$oPuerta5->minimo   = $controlSensores->campo('minimoPuerta5', 0);
				$oPuerta5->maximo   = $controlSensores->campo('maximoPuerta5', 0);
				
				$Movil->controlaPuerta6 = $controlSensores->campo('puerta6', 0);
				$oPuerta6->factor   = $controlSensores->campo('factorPuerta6', 0);
				$oPuerta6->minimo   = $controlSensores->campo('minimoPuerta6', 0);
				$oPuerta6->maximo   = $controlSensores->campo('maximoPuerta6', 0);
				
				$Movil->controlaPuerta7 = $controlSensores->campo('puerta7', 0);
				$oPuerta7->factor   = $controlSensores->campo('factorPuerta7', 0);
				$oPuerta7->minimo   = $controlSensores->campo('minimoPuerta7', 0);
				$oPuerta7->maximo   = $controlSensores->campo('maximoPuerta7', 0);
				
				$Movil->controlaPuerta8 = $controlSensores->campo('puerta8', 0);
				$oPuerta8->factor   = $controlSensores->campo('factorPuerta8', 0);
				$oPuerta8->minimo   = $controlSensores->campo('minimoPuerta8', 0);
				$oPuerta8->maximo   = $controlSensores->campo('maximoPuerta8', 0);
				
				$Movil->controlaEnganche = $controlSensores->campo('enganche', 0);
				$oEnganche->factor   = $controlSensores->campo('factorEnganche', 0);
				$oEnganche->minimo   = $controlSensores->campo('minimoEnganche', 0);
				$oEnganche->maximo   = $controlSensores->campo('maximoEnganche', 0);
				
				$Movil->controlaLibreOcupado = $controlSensores->campo('libreOcupado', 0);
				$oLibreOcupado->factor   = $controlSensores->campo('factorLibreOcupado', 0);
				$oLibreOcupado->minimo   = $controlSensores->campo('minimoLibreOcupado', 0);
				$oLibreOcupado->maximo   = $controlSensores->campo('maximoLibreOcupado', 0);
				
				$Movil->controlaPrepanico = $controlSensores->campo('prepanico', 0);
				$oPrepanico->factor   = $controlSensores->campo('factorPrepanico', 0);
				$oPrepanico->minimo   = $controlSensores->campo('minimoPrepanico', 0);
				$oPrepanico->maximo   = $controlSensores->campo('maximoPrepanico', 0);
				
				$Movil->controlaCaudalimetro = $controlSensores->campo('caudalimetro', 0);
				$Movil->controlaTanqueNafta = $controlSensores->campo('tanqueNafta', 0);
				$Movil->controlaTemperaturaMotor = $controlSensores->campo('tempMotor', 0);
				$Movil->controlaTemperaturaCarga = $controlSensores->campo('tempCarga', 0);
				
				
				$Movil->SENSORES["prepanico"] 	= $oPrepanico;
				$Movil->SENSORES["puerta1"] 	= $oPuerta1;
				$Movil->SENSORES["puerta2"] 	= $oPuerta2;
				$Movil->SENSORES["puerta3"] 	= $oPuerta3;
				$Movil->SENSORES["puerta4"] 	= $oPuerta4;
				$Movil->SENSORES["puerta5"] 	= $oPuerta5;
				$Movil->SENSORES["puerta6"] 	= $oPuerta6;
				$Movil->SENSORES["puerta7"] 	= $oPuerta7;
				$Movil->SENSORES["puerta8"] 	= $oPuerta8;
				$Movil->SENSORES["enganche"] 	= $oEnganche;
				$Movil->SENSORES["libreOcupado"]= $oLibreOcupado;
	
			/*
				$Movil->controlaCaudalimetro = BykomCliente::Consulta_ControlaSensorAnalogico($Movil->id, 3);
				$Movil->controlaTanqueNafta = BykomCliente::Consulta_ControlaSensorAnalogico($Movil->id, 4);
				$Movil->controlaTemperaturaMotor = BykomCliente::Consulta_ControlaSensorAnalogico($Movil->id, 15);
				$Movil->controlaTemperaturaCarga = BykomCliente::Consulta_ControlaSensorAnalogico($Movil->id, 16);
	
				$Movil->controlaLibreOcupado = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 14);
				$Movil->controlaPuerta1 = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 6);
				$Movil->controlaPuerta2 = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 5);
				$Movil->controlaPuerta3 = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 8);
				$Movil->controlaPuerta4 = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 7);
				$Movil->controlaPuerta5 = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 9);
				$Movil->controlaPuerta6 = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 12);
				$Movil->controlaPuerta7 = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 11);
				$Movil->controlaPuerta8 = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 13);
				$Movil->controlaEnganche = BykomCliente::Consulta_ControlaSensorDigital($Movil->id, 10);
			*/
	/*
				$Movil->controlaPuerta1 = -1;
				$Movil->controlaPuerta2 = 2;
				$Movil->controlaPuerta3 = 3;
				$Movil->controlaPuerta4 = 4;
				$Movil->controlaPuerta5 = 5;
				$Movil->controlaPuerta6 = 6;
				$Movil->controlaPuerta7 = 7;
				$Movil->controlaPuerta8 = 8;
				$Movil->controlaEnganche = 9;
				$Movil->controlaLibreOcupado = -1;
				$Movil->controlaTemperaturaCarga = true;
				*/
	/*
				$Movil->controlaPuerta1 = -1;/
				$Movil->controlaPuerta2 = -1;
				$Movil->controlaPuerta3 = -1;
				$Movil->controlaPuerta4 = -1;
				$Movil->controlaPuerta5 = -1;
				$Movil->controlaPuerta6 = -1;
				$Movil->controlaPuerta7 = -1;
				$Movil->controlaPuerta8 = -1;
				$Movil->controlaEnganche = -1;
				$Movil->controlaTemperaturaCarga = true;
				$Movil->controlaLibreOcupado = 10;
	*/
				$Movil->POSIMOVIL = NULL;
				array_push($result, $Movil);
				$indices[$Movil->id] = $i;
			}
			//SETEO LAS POSICIONES ACTUALES DE LAS CUENTAS VISIBLES
			if (($ctasVisibles!=NULL)&&(trim($ctasVisibles)!='')){
				$posicionesIniciales = BykomCliente::Consulta_PosicionActual_Avl($ctasVisibles);
				for ( $i=0; $i<$posicionesIniciales->Cantidad(); $i++) {
					$posiMovil = $this->getPosiMovil($posicionesIniciales, $i);
					if($indices[$posiMovil->id]!=""){
						$result[$indices[$posiMovil->id]]->POSIMOVIL = $posiMovil;
					}
				}
			}
		}
		return $result;
	}
}
?>